﻿using App_Clinique.ClassLibrary;
using App_Clinique.ClassLibrary.Classes;
using App_Clinique.ClassLibrary.Entities;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace App_Clinique
{
    public partial class ArretMaladieForm : Form
    {
        public Patient patientDb { get; set; }
        public ArretMaladie arretmaladieDB { get; set; }

        public ArretMaladieForm()
        {
            InitializeComponent();
        }

        /****************************************************************************************************
         * Methods
         ***************************************************************************************************/
        private bool controle_saisie()
        {
            bool saisie_ok = false;
            if (dtp_datefin.Value < dtp_datedeb.Value)
            {
                MessageBox.Show("Vérifiez saisir des dates cohérentes");
            }
            else if (txt_raison.Text == "")
            {
                MessageBox.Show("Veuillez saisir le motif de l'arrêt");
            }
            else saisie_ok = true;

            return saisie_ok;
        }

        /****************************************************************************************************
         * Events
         ***************************************************************************************************/
        private void ArretMaladieForm_Load(object sender, EventArgs e)
        {
            // Récupération des informations de l'arrêt maladie
            dtp_datedeb.Value = arretmaladieDB.DateDebutArretMaladie;
            dtp_datefin.Value = arretmaladieDB.DateFinArretMaladie;
            txt_raison.Text = arretmaladieDB.RaisonMedicale;

            switch (Singleton.Current.ModeCourant)
            {
                case Singleton.Mode.Nouveau:
                    dtp_datedeb.Enabled = true;
                    dtp_datefin.Enabled = true;
                    txt_raison.Enabled = true;

                    AjouterButton.Enabled = false;
                    ModifierButton.Enabled = false;
                    SupprimerButton.Enabled = false;
                    btn_sauvegarde.Enabled = true;
                    break;

                case Singleton.Mode.Modifier:
                case Singleton.Mode.Consultation:
                    dtp_datedeb.Enabled = false;
                    dtp_datefin.Enabled = false;
                    txt_raison.Enabled = false;

                    AjouterButton.Enabled = false;
                    ModifierButton.Enabled = true;
                    SupprimerButton.Enabled = true;
                    btn_sauvegarde.Enabled = true;
                    break;
            }
        }

        private void AjouterButton_Click(object sender, EventArgs e)
        {
            Singleton.Current.ModeCourant = Singleton.Mode.Nouveau;

            arretmaladieDB = new ArretMaladie();

            dtp_datedeb.Enabled = true;
            dtp_datefin.Enabled = true;
            txt_raison.Enabled = true;

            dtp_datedeb.Value = arretmaladieDB.DateDebutArretMaladie;
            dtp_datefin.Value = arretmaladieDB.DateFinArretMaladie;
            txt_raison.Text = arretmaladieDB.RaisonMedicale;
        }

        private void ModifierButton_Click(object sender, EventArgs e)
        {
            Singleton.Current.ModeCourant = Singleton.Mode.Modifier;

            dtp_datedeb.Enabled = true;
            dtp_datefin.Enabled = true;
            txt_raison.Enabled = true;
        }

        private void SupprimerButton_Click(object sender, EventArgs e)
        {
            Singleton.Current.ModeCourant = Singleton.Mode.Supprimer;

            ArretMaladie.Delete(arretmaladieDB);
            arretmaladieDB = new ArretMaladie();

            dtp_datedeb.Value = arretmaladieDB.DateDebutArretMaladie;
            dtp_datefin.Value = arretmaladieDB.DateFinArretMaladie;
            txt_raison.Text = arretmaladieDB.RaisonMedicale;

            dtp_datedeb.Enabled = false;
            dtp_datefin.Enabled = false;
            txt_raison.Enabled = false;

            AjouterButton.Enabled = true;
            ModifierButton.Enabled = false;
            SupprimerButton.Enabled = false;
            btn_sauvegarde.Enabled = false;
        }

        private void btn_sauvegarde_Click(object sender, EventArgs e)
        {
            //if (dtp_datedeb.Enabled == true)
            //{
                bool saisie_ok = controle_saisie();
                if (saisie_ok)
                {
                    // Contrôle des champs
                    arretmaladieDB.PatientID = patientDb.PatientID;
                    arretmaladieDB.DossierMedicalID = patientDb.DocumentID;
                    arretmaladieDB.DateDebutArretMaladie = dtp_datedeb.Value;
                    arretmaladieDB.DateFinArretMaladie = dtp_datefin.Value;
                    arretmaladieDB.RaisonMedicale = txt_raison.Text;

                    switch (Singleton.Current.ModeCourant)
                    {
                        case Singleton.Mode.Nouveau:
                            ArretMaladie.Create(arretmaladieDB);
                            MessageBox.Show("Arrêt maladie enregistré !");
                            break;

                        case Singleton.Mode.Modifier:
                            ArretMaladie.Update(arretmaladieDB);
                            MessageBox.Show("Modification enregistrée !");
                            break;
                    }

                    // Passer en mode consultation des données
                    Singleton.Current.ModeCourant = Singleton.Mode.Consultation;

                    Singleton.Current.ArretsMaladie = ArretMaladie.GetList(patientDb.PatientID);

                    PatientForm EcranPatient = new PatientForm();
                    EcranPatient.RefreshArretsMaladieDataGridView();
                }
            //}
        }
    }
}
